// 导出一个配置好的axios提供给main使用
import axios from 'axios'
import auth from '@/utils/auth'
import router from '@/router'
import JSONBINGINT from 'json-bigint'

// 基准地址配置
axios.defaults.baseURL = 'http://ttapi.research.itcast.cn/mp/v1_0/'
// 请求头token配置
// axios.defaults.headers.Authorization = `Bearer ${auth.getUser().token}`
//转换响应格式
axios.defaults.transformResponse = [data => {
  //data 就是原始的响应数据（原始的json数据）
  //一定需要发转换后的数据返回出去
  //进行格式转换
  // data 如果不是json 格式   return JSONBIGINT.parse(data) 可能会报错
  try{
      return JSONBINGINT.parse(data)
  }catch (e){
    //如果转换后就数据异常 就返回原始数据
    data
  }
  }]

// 请求拦截器
axios.interceptors.request.use(config => {
  // 获取本地的token，如果有token咱们就追加即可
  const user = auth.getUser()
  if (user.token) config.headers.Authorization = `Bearer ${user.token}`
  return config
}, error => {
  return Promise.reject(error)
})

//响应拦截器
axios.interceptors.response.use(res =>{
  return res
}, err =>{
  // token失效 后台会报错
  // err.response 响应报文对象
  // err.response.status 状态码
  if(err.response && err.response.status === 401){
    //拦截登录
    router.push('/login')
  }

return Promise.reject(err)

})



export default axios